Apple
Computer developed the AppleTalk protocol suite to implement file
transfer, printer sharing, and mail service among Apple systems
using the LocalTalk interface built into Apple hardware. AppleTalk
ports to other network media such as Ethernet by the use of
LocalTalk to Ethernet bridges or by Ethernet add-in boards for Apple
machines.
AppleTalk is a
multi-layered protocol providing internetwork routing, transaction
and data stream service, naming service, and comprehensive file and
print sharing. In addition, many third-party applications exist for
the AppleTalk protocols.
To extend the addressing capability of AppleTalk
networks and provide compliance with the IEEE 802 standard, Apple
Computer introduced AppleTalk Phase 2 in 1989. AppleTalk Phase 2
differs primarily in the range of available network layer addresses
and the use of the IEEE 802.2 Logical Link Control (LLC) protocol at
the Data Link Layer.
The AppleTalk protocol suite includes the
following protocols:
- AARP
- AppleTalk Address Resolution Protocol.
- DDP -
Datagram Delivery Protocol.
- RTMP
- Routing Table Maintenance Protocol.
- AEP -
AppleTalk Echo Protocol.
- ATP -
AppleTalk Transaction Protocol.
- NBP -
Name-Binding Protocol.
- ZIP -
Zone Information Protocol.
- ASP -
AppleTalk Session Protocol.
- PAP -
Printer Access Protocol.
- ADSP
- AppleTalk Data Stream Protocol.
- AFP -
AppleTalk Filing Protocol.
The following diagram illustrates the AppleTalk
protocol suite in relation to the OSI model:

AppleTalk protocol suite in relation to
OSI model
AARP
AARP (AppleTalk Address Resolution Protocol)
maps between any two sets of addresses at any level of one or more
protocol stacks. Specifically, it is used to map between AppleTalk
node addresses used by the Datagram Delivery Protocol (DDP), as well
as higher-level AppleTalk protocols, and the addresses of the
underlying data link that is providing AppleTalk connectivity. AARP
makes it possible for AppleTalk systems to run on any data
link.
The AARP packet
structure is shown below:
8 |
16 bits
|
Data-link header |
Hardware type
|
Protocol type
|
Hardware address
length |
Protocol address
length |
Function
|
AARP packet
structure
Identifier for the data-link type.
Identifier for the protocol
family.
Length in bytes of the
hardware address field.
Length in bytes of the
protocol address field.
Indicates the
packet function (1=AARP request, 2=AARP response and 3-AARP
probe).
Following the header are the hardware and
protocol addresses according to the values of the function
field.
DDP
The Datagram Delivery Protocol (DDP) provides a
datagram delivery and routing service to higher layer protocols. DDP
frame headers can use the long or short format. Short format DDP
headers carry only the source and destination service socket
numbers, while long format DDP headers also carry the source and
destination network and node addresses needed for routing
capability. Because AppleTalk Phase 2 does not use LLAP to identify
source and destination nodes, it supports only the long format DDP
header for Phase 2.
Short Format
Frames
The following fields are present for short
format DDP frames:
Destination service socket
address used by the frame.
Source service socket address
used by the frame.
Total length of the
datagram.
Code used to indicate the higher
layer protocol used.
The following additional fields are present for
long format DDP frames:
Destination
network/node/socket. Destination network number, node address, and
socket address used by the frame, displayed in the following format:
NNNN.nn (ss), where NNNN is the network number, nn is the node
address and ss is the socket address.
Source
network/node/socket. Source network number, node address, and socket
address used by the frame, in the same format as D.
Checksum of the
entire datagram beginning after the checksum field. A checksum of
zero implies that the checksum is not in use.
Number of routers encountered
by the frame. After 16 hops, the protocol discards the
frame.
The Routing Table Maintenance Protocol (RTMP)
manages routing information for AppleTalk networks. RTMP
communicates known network numbers and data concerning accessibility
between networks. AppleTalk Phase 2 allows for split horizon routing
where the protocol transfers only routing data about directly
connected networks in an effort to reduce the traffic overhead
imposed by routing updates.
Frames
RTMP frames may be one of the following
types:
[request] |
Requests network
number and local router ID. |
[reply] |
Supplies network
number and local router ID. |
[data] |
Carries the current
routing table data. |
[RDR split]
|
Requests immediate
routing data using split horizon (only Phase 2). |
[RDR full] |
Requests full table
of routing data (only Phase 2).
|
The following parameters are present in Apple RTMP
frames:
Network number and
address of the system sending the RTMP [reply] or [data] frame. The
network/node ID is displayed in the following format: NNNN.nn, where
NNNN is the network number and nn is the node address.
List of known network nodes and accessibility number
representing the relative routing cost to the network. The routing
table displays items in the following format: NNNN(cc), where NNNN
is the network number and cc is the routing cost. AppleTalk Phase 2
RTMP frames can specify a range of network numbers and a protocol
version number for the first term, as follows: NNNN-NNNN(cc)
[V=x], where NNNN is the network number, cc is the routing cost in
hops and x is the protocol version (2 for Phase 2).
The AppleTalk Echo Protocol (AEP) provides an echo service to
AppleTalk hosts. It can specify up to 585 bytes of data for an echo
transaction.
AEP frames may be one of the following
types:
[echo reqst]
|
Request to echo the
specified data. |
[echo reply]
|
Echo response
containing echo data. |
ATP
The AppleTalk Transaction Protocol (ATP) provides reliable
delivery service for transaction-oriented operations. ATP uses a
bitmap token to handle acknowledgement and flow control and a
sequence of reserved bytes for use by higher level
protocols.
Frames
ATP frames may be of the following types:
[request]
|
Requests data
specified by the bitmap. |
[reply] |
Returns requested
data. |
[release]
|
Indicates end of
transaction. |
Frame
Parameters
ATP frames contain the following parameters:
Reference
code used to match ATP requests with ATP replies.
Bitmap requests a specific data frame
and provides acknowledgment for received data. 1 in the bitmap
indicates an outstanding request for a data segment; 0 indicates
that the system satisfied the request. The bitmap position
corresponds to the data segment position. The bit on the far right
represents the first data segment with successive segments indicated
to the left. The bitmap is 8 bits wide, permitting ATP to send up to
8 data segments per transaction request.
Sequence number corresponding
to the data segment of the current response frame.
Four bytes reserved for use by higher level
protocols.
The following control flags
display in upper-case when set and in lower-case when
inactive:
x,X
|
When set, exactly-once
mode is set, ensuring that the current transaction is
performed only once. |
e, E
|
When set, the frame is
the end of a data response. |
s, S
|
When set, the bitmap
status requests reuse of buffers already
acknowledged. |
NBP
The AppleTalk Name Binding Protocol (NBP) manages the use of
names on AppleTalk networks. NBP maintains a names directory that
includes names registered by hosts and bound to socket addresses.
After a name is registered, the AppleTalk host can perform a name
lookup to find the socket address associated with the name. When the
host issues a name lookup on the Internet, NBP sends a broadcast
lookup to a router that generates name lookup requests to each
network within the zone specified in the name.
NBP frames may be one of the following types:
[brdcast lookup]
|
Broadcast search for
the specified name. |
[name lookup]
|
Local search for the
specified name. |
[lookup reply]
|
Reply to a name
lookup. |
NBP frames have the following parameters:
Number of socket/name pairs
contained in the message.
Reference code used to match NBP
replies with NBP requests.
ZIP
The AppleTalk Zone Information Protocol (ZIP) manages the
relationship between network numbers and zone names. AppleTalk
networks primarily implement ZIP in routers that gather network
number information by monitoring RTMP frames.
Frames
ZIP frames may be one of the following types:
[zonename query]
|
Requests zone name
for a network number. |
[zonename reply]
|
Supplies zone name
for network number. |
[zonelist query]
|
Requests the
complete list of known zones. |
[zonelist reply]
|
Supplies the
complete zone list. |
[get zone reqst]
|
Requests the local
zone ID. |
[get zone reply]
|
Supplies the local
zone ID. |
[takedown zone]
|
Removes a zone from
the zone list. |
[bring up zone]
|
Adds a zone to the
zone list. |
[local zone req]
|
Requests local zones
on extended networks. |
[ext name reply]
|
Zone name replies
too long for one frame. |
[change notify ]
|
Alerts nodes of a
zone name change. |
[net info reqst]
|
Requests network
information for a zone name. |
[net info reply]
|
Supplies network
range and multicast address for zones on extended nets.
|
Frame Parameters
Apple ZIP frames contain the following parameters:
Number of networks
for the request or zone information reply.
The starting zone for
the zone list request.
The name associated with the
specified zone.
Multicast
address assigned to the specified zone.
The local zone name.
The previously used name for the
specified zone.
New zone name for the specified
zone.
The range of network numbers
associated with the specified zone display in the format: SSSS-EEEE
where SSSS is the starting network number and EEEE is the ending
network number.
List of networks and zone names
represented as follows: NNNN = zonename, where NNNN is the
network number and zonename is the zone name.
Apple ZIP [net info reply] and [change notify] frames can contain
the following messages:
{invalid zone}
|
Specified zone name
does not exist. |
{one zone}
|
Specified zone is
the only zone. |
{use broadcast}
|
Local network does
not support multicasting, use broadcasting.
|
The AppleTalk Session Protocol (ASP) manages sessions for higher
layer protocols such as AFP. ASP issues a unique session identifier
for each logical connection and continuously monitors the status of
each connection. It maintains idle sessions by periodically
exchanging keep alive frames in order to verify the session
status.
Frames
ASP frames can be one of the following types:
[open session reqst]
|
Requests to open an
ASP session. |
[close session
reqst] |
Requests to close an
ASP session. |
[command call reqst]
|
Calls to higher
level protocol. |
[status request]
|
Requests server
status. |
[session keep alive]
|
Maintains idle
connections. |
[session write
reqst] |
Requests to perform
a write operation. |
[write continue req]
|
Begins the transfer
of write data. |
[attention request]
|
Send urgent data.
|
[close session
reply] |
Acknowledges session
close. |
[command call reply]
|
Reply from higher
level protocol. |
[server status
reply] |
Reply containing
server information. |
[open session reply]
|
Reply to open
session request. |
[session write
reply] |
Reply to session
write request. |
[write continue
rply] |
Session write data.
|
[attention reply]
|
Acknowledges receipt
of attention request. |
Frame Parameters
Apple ASP frames can contain the following parameters:
A reference code used to identify
the session.
Used by command, write, and
write continue frames to maintain data order.
The socket number in use by
the server end of the connection.
Workstation session
socket. The socket number in use by the workstation end of the
connection.
ASP version number currently
in use.
Buffer size available for
receiving command blocks.
Messages
Apple ASP reply frames can contain the following messages:
{OK} |
Command completed
successfully. |
{xxxx bytes written}
|
Number of bytes
written for [write continue rply] frames. |
{bad version number}
|
ASP version not
supported. |
{buffer too small}
|
Request buffer too
small for command block. |
{no more sessions}
|
Server cannot open
any more sessions. |
{no servers}
|
Server not
responding. |
{parameter error}
|
ASP parameter values
invalid. |
{server is busy}
|
Server too busy to
open another session. |
{session closed}
|
Referenced session
has been closed. |
{size error}
|
Command block larger
than maximum. |
{too many clients}
|
Client number limit
exceeded. |
{no acknowledgement}
|
Workstation did not
acknowledge. |
{unknown error}
|
Unknown error
condition. |
PAP
The Printer Access Protocol (PAP) manages the virtual connection
to printers and other servers. PAP is used to convey connection
status and coordinate data transfer.
Frames
PAP frames can be one of the following types:
[open connection
rqst] |
Request to open a
PAP connection. |
[open connection
rply] |
Reply to open
connection request. |
[send data request]
|
Request to send PAP
data. |
[PAP data segment]
|
Segment of PAP data
transfer. |
[session keep alive]
|
Verify connection
status. |
[close connection
req] |
Request to close a
PAP connection. |
[close connection
rep] |
Reply to close
connection request. |
[send server status]
|
Request server
status. |
[server status
reply] |
Reply to server
status request. |
Frame Parameters
PAP frames can contain the following parameters:
Reference code used to identify
the PAP connection.
ATP socket number used for PAP
status and data transfers.
Maximum amount of data in bytes
that the protocol can send in response to each [send data request]
(also known as the Flow Quantum).
Length of time that a
workstation waits for a connection.
Used in send data request
frames to maintain data order.
End-of-file
indicator. Used to indicate the end of a data transfer.
Result code
indicating the outcome of an [open connection rqst]: 0000
Connect OK. FFFF Printer busy.
Status message
returned by status and open connection reply frames.
ADSP
The AppleTalk Data Stream Protocol (ADSP)
provides a data channel for the hosts. It is a connection-oriented
protocol that guarantees in-sequence data delivery with flow
control.
Frames
ADSP frames can be one of the following types:
[acknowledge/probe]
|
Acknowledges data or
requests acknowledge. |
[open connect reqst]
|
Requests an ADSP
connection. |
[open connect ackn]
|
Acknowledges ADSP
connection. |
[open request &
ackn] |
Acknowledges inbound
connection and requests an outbound connection. |
[open connect
denial] |
Refuses an inbound
connection. |
[close connection]
|
Requests to close an
ADSP connection. |
[forward reset]
|
Requests to ignore
specific data. |
[forward reset ackn]
|
Acknowledges forward
reset of data stream. |
[retransmit advise]
|
Requests to
retransmit data. |
Frame Parameters
ADSP frames can contain the following parameters:
Reference code used to identify
the sending side of a connection.
Reference code
identifying the receiving side of a connection.
Sequence number used for the
outbound data stream.
Sequence number used for the
inbound data stream.
AFP
The AppleTalk Filing Protocol (AFP) is the file sharing protocol
of the AppleTalk architecture. It provides a native mode interface
to Apple file system resources.
Apple files are comprised of two data structures called forks. An
Apple file may be accessed by its data fork or its resource fork.
The data fork holds raw file data while the resource fork contains
information used by the operating system to manage icons and
drivers.
Frames
AFP frames can be one of the following commands:
[lock/unlock bytes]
|
Locks or unlocks a
specified byte range. |
[close volume]
|
Closes the specified
volume resource. |
[close directory]
|
Closes the specified
directory. |
[close fork]
|
Closes the specified
fork (file). |
[copy file]
|
Copies the specified
file. |
[create directory]
|
Creates the
specified directory. |
[create file]
|
Creates the
specified file. |
[delete file]
|
Deletes the
specified file or directory. |
[list directory]
|
Lists the specified
directory. |
[flush to disk]
|
Writes data held in
RAM to disk. |
[flush fork]
|
Writes data to disk
for the specified fork. |
[get fork params]
|
Retrieves parameters
for the specified fork. |
[get server info]
|
Retrieves server
information. |
[get server params]
|
Retrieves server
parameters. |
[get volume params]
|
Retrieves volume
parameters. |
[consumer login]
|
Begins workstation
log-in. |
[login continue]
|
Continues
workstation log-in. |
[logout] |
Workstation log-out.
|
[map user/group ID]
|
Gets ID associated
with user/group name. |
[map user/grp name]
|
Gets name associated
with user/group ID. |
[move and rename]
|
Moves and renames a
file. |
[open volume]
|
Opens the specified
volume. |
[open directory]
|
Opens the specified
directory. |
[open fork]
|
Opens the specified
fork (file). |
[read from fork]
|
Reads from the
specified fork (file). |
[rename file/dir]
|
Renames a file or
directory. |
[set dir params]
|
Sets directory
parameters. |
[set file params]
|
Sets file
parameters. |
[set fork params]
|
Sets fork
parameters. |
[set volume params]
|
Sets volume
parameters. |
[write to fork]
|
Writes to the
specified fork (file). |
[get file/dir pars]
|
Gets file or
directory parameters. |
[set file/dir pars]
|
Sets file or
directory parameters. |
[change password]
|
Changes user
password. |
[get user info]
|
Retrieves user
information. |
[open database]
|
Opens the desktop
database. |
[close database]
|
Closes the desktop
database. |
[get icon]
|
Retrieves an icon
from the desktop database. |
[get icon info]
|
Retrieves icon
information. |
[add APPL mapping]
|
Adds application
information. |
[remove APPL]
|
Removes application
information. |
[get APPL mapping]
|
Retrieves
application information. |
[add comment]
|
Adds a comment to a
file or directory. |
[remove comment]
|
Removes a comment
from a file or directory. |
[get comment]
|
Retrieves comment
text from a file/directory. |
[add icon]
|
Adds an icon for an
application. |
Frame Parameters
Apple AFP frames can contain the following parameters:
Directory attributes:
Inv |
Invisible to workstation user. |
Sys |
System directory. |
Bk |
Backup is needed (dir modified). |
RI |
Rename inhibit mode set. |
DI |
Delete inhibit mode set. |
File attributes:
Inv |
Invisible to workstation user. |
MU |
Multi-user application. |
RAO |
File resource fork already open. |
DAO |
File data fork already open. |
RO |
Read only mode set for both forks. |
WI |
Cannot write to either fork. |
Sys |
File is system file. |
Bk |
Backup is needed (file modified). |
RI |
Rename inhibit mode set. |
DI |
Delete inhibit mode set. |
CP |
Copy protect mode
set. |
R |
Allows everyone read
access. |
W |
Allows everyone write
access. |
Deny-R |
Denies read access if the
file is open. |
Deny-W |
Denies write access if the
file is open. |
1 |
Flat, no support for directories. |
2 |
Fixed directory ID. |
3 |
Variable directory
ID. |
Messages
AFP [get server params] replies contain a listing in the format:
VolName(P,II), where VolName is a list of the volume names, P
indicates password-protection and II indicates Apple II
configuration information present.
The following status and error messages may be displayed for AFP
replies:
Status
|
Error
Message |
{OK} |
Command completed
successfully. |
{Object locked}
|
Specified object
locked. |
{Volume locked}
|
Specified volume
locked. |
{Icon type error}
|
Icon size mismatch.
|
{Directory not
found} |
Specified directory
does not exist. |
{Can't rename}
|
Cannot rename volume
or root directory. |
{Server going down}
|
The server is no
longer active on the network. |
{Too many open
files} |
Open file limit
exceeded. |
{Object type error}
|
Specified object
invalid for operation. |
{Call not supported}
|
AFP call unsupported
by this version. |
{User not
authorized} |
User has
insufficient access rights. |
{Session closed}
|
Specified session ID
has been closed. |
{Byte range overlap}
|
Lock conflicts with
existing lock. |
{Range not locked}
|
Attempt to unlock an
unlocked byte range. |
{Parameter error}
|
Specified parameters
invalid for operation. |
{Object not found}
|
Specified object
does not exist. |
{Object exists}
|
Specified object
already exists. |
{No server}
|
AFP server is not
responding. |
{No more locks}
|
Number of server
locks exceeded. |
{Miscellaneous
error} |
General command
error. |
{Lock error}
|
Byte range already
locked by another user. |
{Item not found}
|
Specified item not
found. |
{Flat volume}
|
Volume does not
support directories. |
{File busy}
|
Specified file is
currently open. |
{EOF error}
|
End of fork reached
unexpectedly. |
{Disk full}
|
Volume is out of
disk space. |
{Directory not
empty} |
Attempt to delete a
non-empty directory. |
{Deny conflict}
|
Specified deny
rights conflict. |
{Cannot move}
|
Cannot move
directory to a descendent directory. |
{Bitmap error}
|
Invalid bitmap
specified for object. |
{Bad version number}
|
Specified version
number is invalid. |
{Bad User Authentic}
|
User authentication
failed. |
{Continue Authentic}
|
Authentication not
completed. |
{Access denied}
|
User does not have
permission for operation. |
search ][ protocols
by family ][ index of
protocols
|